home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Development / AmigaTalk_X / system / TrackDisk.st < prev    next >
Encoding:
Text File  |  2002-03-13  |  3.2 KB  |  117 lines

  1. " -------------------------------------------------------------------- "
  2. " TrackDisk Class allows the user low-level (device) access to any     "
  3. " floppy drives attached to their system (DF0: through DF3:).          "
  4. ""
  5. "  WARNING:  You should know what you're doing to the Amiga OS before  "
  6. "            messing with this Class, or any other System Class!       "
  7. " ---------------------------------------------------------------------"
  8. " The following methods are commented out, because turnMotorOff 
  9.   hangs up my system (JTS).
  10. |
  11.   turnMotorOn 
  12.     ^ <primitive 229 17 address>     
  13. |
  14.   turnMotorOff 
  15.     ^ <primitive 229 18 address>   
  16. "
  17. " ---------------------------------------------------------------------"
  18.  
  19. Class TrackDisk :Device ! address diskName trkNumber !
  20. [
  21.   ejectDisk      "Won't do anything for most Amigas!"
  22.     ^ <primitive 229 16 address>
  23. |
  24.   formatTrack: trackNumber data: theDataBytes
  25.     "DANGER! DANGER, Will Robinson!"
  26.     trkNumber <- trackNumber.
  27.     ^ <primitive 229 19 theDataBytes trackNumber address>
  28. |
  29.   readRawData: trackNumber
  30.     trkNumber <- trackNumber.
  31.     ^ <primitive 229 20 trackNumber address>
  32. |
  33.   writeRawData: rawDataBytes track: trackNumber
  34.     trkNumber <- trackNumber.
  35.     ^ <primitive 229 21 rawDataBytes trackNumber address>.
  36. |
  37.   clearReadBuffer
  38.     <primitive 229 4 address>      
  39. |
  40.   setSyncType: newSyncType
  41.     <primitive 229 5 newSyncType address>
  42. |
  43.   getErrorString
  44.     ^ <primitive 229 8 address> 
  45. |
  46.   getSectorSize
  47.     ^ <primitive 229 12 address>
  48. |
  49.   getTrackSize
  50.     ^ <primitive 229 10 address>
  51. |
  52.   getDeviceType
  53.     ^ <primitive 229 9 address>
  54. |
  55.   getDriveType
  56.     "1 = 3.5in, 2 = 5.25in, 3 = 3.5in spinning at 150 RPM."
  57.     ^ <primitive 229 11 address>
  58. |
  59.   displayDriveType ! type !
  60.     type <- self getDriveType.
  61.     (type == 1)
  62.        ifTrue:  ['3-1/2" Floppy Disk.' print]
  63.        ifFalse: [(type == 2)
  64.                     ifTrue:  ['5-1/4" Floppy Disk.' print]
  65.                     ifFalse: ['3-1/2" Floppy spinning at 150 RPM' print]
  66.                 ]
  67. |
  68.   getNumberOfTracks 
  69.     ^ <primitive 229 13 address>
  70. |
  71.   getTotalSectors 
  72.     ^ <primitive 229 14 address>
  73. |
  74.   getTotalSize ! secsize numsecs !
  75.     numsecs <- self getTotalSectors.
  76.     secsize <- self getSectorSize.
  77.  
  78.     ^ numsecs * secsize
  79. |
  80.   seekTrack: trackNumber 
  81.     trkNumber <- trackNumber.
  82.     ^ <primitive 229 15 trackNumber address>
  83. |
  84.   isDiskPresent 
  85.     ^ <primitive 229 6 address>
  86. |
  87.   isWriteProtected 
  88.     ^ <primitive 229 7 address>
  89. |
  90.   readTrack: trackNumber
  91.     trkNumber <- trackNumber.
  92.     ^ <primitive 229 2 trackNumber address>
  93.     
  94. |
  95.   writeTrack: dataBytesOut track: trackNumber
  96.     trkNumber <- trackNumber.
  97.     ^ <primitive 229 3 dataBytesOut trackNumber address>
  98. |
  99.   displayBytes: byteArray ! size wTitle !
  100.     size   <- self getTrackSize.
  101.     wTitle <- String new.
  102.     wTitle <- 'displayBytes - size = ',(size asString),' Track #: ', (trkNumber asString).
  103.     <primitive 229 22 byteArray wTitle>
  104. |
  105.   new: newDiskName
  106.     address  <- <primitive 229 23 newDiskName>.
  107.     diskName <- newDiskName.
  108.     ^ self
  109. |
  110.   open: newUnitNumber
  111.     <primitive 229 1 newUnitNumber address>
  112. |     
  113.   close
  114.     <primitive 229 0 address>.
  115.     address <- nil             "NO TURNING BACK FROM HERE!"
  116. ]
  117.